home *** CD-ROM | disk | FTP | other *** search
/ The Original Shareware 1.1 / The Original Shareware (WeMake CDs)(Volume 1.1)(CDs, Inc)(1993).iso / 32 / cadence.zip / VOL1NO3.ZIP / MOMENT.BAS < prev    next >
BASIC Source File  |  1986-07-18  |  3KB  |  54 lines

  1. 100 '            ********************************
  2. 110 '            *       MOMENT OF INERTIA      *
  3. 120 '            ********************************
  4. 130 '
  5. 140 '              Designed and implemented by:
  6. 150 '                Christopher C. Bachman
  7. 160 '                       6-15-86
  8. 170 ' THIS PROGRAM WILL EXTRACT THE X AND Y CO-ORDINATES FOR EACH CELL IN
  9. 180 ' AN AUTOCAD DXF FILE TO DETERMINE THE MOMENT OF INERTIA OF THE AREA.
  10. 190 ' THIS REQUIRES KNOWING THE CELL SIZE USED IN THE DXF FILE, AND THE
  11. 200 ' CO-ORDINATES OF THE CENTROID OF THE SECTION AREA.
  12. 210 '
  13. 220 LINE INPUT "Give the DXF filename including path and extension. ",F$
  14. 230 OPEN F$ FOR INPUT AS #1
  15. 240 LINE INPUT "Give the scale factor used with the *dots pattern. ",C$
  16. 250 CELL.SIZE# = (VAL(C$) / 16)^2
  17. 260 LINE INPUT "Give the X co-ordinate from the Centroid calculation. ",X$
  18. 270 CENTROID.X# = VAL(X$)
  19. 280 LINE INPUT "Give the Y co-ordinate from the Centroid calculation. ",Y$
  20. 290 CENTROID.Y# = VAL(Y$)
  21. 300   IF EOF(1) THEN 560
  22. 310   INPUT #1, DRAWING.ENTITY.CODE%
  23. 320   LINE INPUT #1, DRAWING.ENTITY.NAME$
  24. 330   IF DRAWING.ENTITY.NAME$ <> "LINE" THEN 300  'Test for line entities.
  25. 340   INPUT #1, DRAWING.LAYER.CODE%               'All line entities are
  26. 350   LINE INPUT #1, DRAWING.LAYER.NAME$          'followed by layer data.
  27. 360   IF DRAWING.LAYER.NAME$ <> "0" THEN GOTO 300 'Test for lines on layer 0.
  28. 370   FOR CO.ORDINATES = 1 TO 2
  29. 380      INPUT #1, CO.ORDINATE.CODE%              'After the layer data comes
  30. 390      LINE INPUT #1, CO.ORDINATE.DATA$         'location data for each line.
  31. 400 '
  32. 410 '    Starting X co-ordinates have a code of 10.
  33. 420 '
  34. 430      IF CO.ORDINATE.CODE% = 10 THEN X.DATA# = VAL(CO.ORDINATE.DATA$)
  35. 440 '
  36. 450 '    Starting Y co-ordinates have a code of 20.
  37. 460 '
  38. 470      IF CO.ORDINATE.CODE% = 20 THEN Y.DATA# = VAL(CO.ORDINATE.DATA$)
  39. 480 '
  40. 490   NEXT CO.ORDINATES
  41. 500 ' Accumulate moments of inertia.
  42. 510 ' Note: Additional spaces were added in lines 530 & 540.
  43. 520 '       Your program can simply rap around to the next line.
  44. 530   MOMENT.OF.INERTIA.X# = MOMENT.OF.INERTIA.X# + (CELL.SIZE#^2 / 12) +                                    (CELL.SIZE# * (CENTROID.X# - X.DATA#)^2)
  45. 540   MOMENT.OF.INERTIA.Y# = MOMENT.OF.INERTIA.Y# + (CELL.SIZE#^2 / 12) +                                    (CELL.SIZE# * (CENTROID.Y# - Y.DATA#)^2)
  46. 550   GOTO 300                                 'Loop til End of File
  47. 560 CLOSE 1                                    'Close Dxf file.
  48. 570 '
  49. 580 ' Print results.
  50. 590 '
  51. 600 PRINT "X CO-ORDINATE FOR MOMENT OF INERTIA = "MOMENT.OF.INERTIA.X#
  52. 610 PRINT "Y CO-ORDINATE FOR MOMENT OF INERTIA = "MOMENT.OF.INERTIA.Y#
  53. 620 END
  54.